Software testing is an important phase in a software lifecycle. The efficiency and profitability of a software organization depends highly on its testing capabilities. Specifically, the software or program testing is an investigation carried out in order to provide stakeholders with data pertaining to the quality of the program under test. Normally, the program testing is carried out in order to determine, whether the program meets all technical and business requirements which define its design and development, and whether the program is working as expected.
With the rise in the trend to develop modular and large integrated software applications, the complexity of testing the software has increased. With the increased complexity as well as stringent quality requirements, the need for effective testing has increased in order to enable identification of errors that need to be fixed as well as the changes that are required in the functionality of the application.